using System;
using System.Web.UI;
using Microsoft.Practices.ServiceLocation;
using SIP.PN.Servicios.Interfaces;

namespace SIP.PN.FrontEnd.Code
{
    public abstract class ControlAbstracto : UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            utilidades = new Utilidades();
        }

        public abstract void Seguridad();

        #region Propiedades

        private Utilidades utilidades;
        public Utilidades Utilidades
        {
            get { return utilidades; }
        }

        #endregion

        #region Servicios

        private IServicioAplicacion srvAplicacion;
        public IServicioAplicacion SrvAplicacion
        {
            get
            {
                if (srvAplicacion == null)
                    srvAplicacion = ServiceLocator.Current.GetInstance<IServicioAplicacion>();
                return srvAplicacion;
            }
        }

        private static IServicioOperario srvOperario;
        public static IServicioOperario SrvOperario
        {
            get
            {
                if (srvOperario == null)
                    srvOperario = ServiceLocator.Current.GetInstance<IServicioOperario>();
                return srvOperario;
            }
        }

        private static IServicioProyecto srvProyecto;
        public static IServicioProyecto SrvProyecto
        {
            get
            {
                if (srvProyecto == null)
                    srvProyecto = ServiceLocator.Current.GetInstance<IServicioProyecto>();
                return srvProyecto;
            }
        }

        private static IServicioTarea srvTarea;
        public static IServicioTarea SrvTarea
        {
            get
            {
                if (srvTarea == null)
                    srvTarea = ServiceLocator.Current.GetInstance<IServicioTarea>();
                return srvTarea;
            }
        }

        private static IServicioTipoDeProyecto srvTipoDeProyecto;
        public static IServicioTipoDeProyecto SrvTipoDeProyecto
        {
            get
            {
                if (srvTipoDeProyecto == null)
                    srvTipoDeProyecto = ServiceLocator.Current.GetInstance<IServicioTipoDeProyecto>();
                return srvTipoDeProyecto;
            }
        }

        #endregion
    }
}
